var EditType = 1; // 页面操作类型 0 新增 1 编辑
$(function() {
	
	sys.selectpicker({
		id:'resourceType',  //select的id
		url: rootPath + "/dict/listKeyMapEntites",  //请求数据的远程地址
		param: {keyType : 'resourceType'}, //过滤参数
		//defaultValue:{},
		valueField: 'keyValue',
		textField: 'keyIntro',
		width: '265px'});
	
	sys.selectpicker({
		id:'status',  //select的id
		url: rootPath + "/dict/listKeyMapEntites",  //请求数据的远程地址
		param: {keyType : 'status'}, //过滤参数
		//defaultValue:{},
		valueField: 'keyValue',
		textField: 'keyIntro',
		width: '265px'});
	
	// 初始化左侧组织架构树
	resTree.init();

	// 保存编辑资源
	$("#btn_eidt_resource").on("click", function() {
		// 提交表单
		$("#editAjaxForm").submit();
		return false;
	});

	// 校验编辑表单资源
	checkResource();
	/**
	 * 初始化下拉框 状态 参数 1 标签id 2数据字典类型 3获取选中的值 4获取其他表数据url
	 */
	/*ZUG.Select.initSelect({
		id : "resourceType",
		data : "resourceType",
		keyType : "resource_type",
		defaultValue : "1",
		placeholder : "菜单"
	});*/

});

/**
 * 校验编辑表单资源
 */
function checkResource() {
	// 新增表单校验
	$("#editAjaxForm").validate({
		rules : {
			resourceName : {
				required : true
			},
			sortNo : {
				required : true
			},
			url : {
				required : true
			},
			resourceIntro : {
				rangelength : [ 1, 51 ]
			}
		},
		messages : {
			resourceName : {
				required : '请填写资源名称',
			},
			sortNo : {
				required : '请填写资源排序',
			},
			url : {
				required : '请填写资源路径'
			},
			resourceIntro : {
				rangelength : '不能超过50个字'
			}
		},
		submitHandler : function(form) {
			if (!$(form).valid()) {
				return false;
			}
			var url = "";
			if (EditType == 0) {
				url = rootPath + "/resource/addResource";
			} else {
				url = rootPath + "/resource/updateResource";
			}
			// 校验成功，异步提交表单
			$.ajax({
				url : url,
				type:"POST",
				dataType:"json",
				data:{
					id:$("#id").val(),
					parentId:$("#parentId").val(),
					parentName:$("#parentName").val(),
					resourceName:$("#resourceName").val(),
					resourceType:$("#resourceType").val(),
					sortNo:$("#sortNo").val(),
					status:$("#status").val(),
					permission:$("#permission").val(),
					url:$("#url").val(),
					resourceIntro:$("#resourceIntro").val(),
					iconClass:$("#iconClass").val()
				},
				success : function(data) {
					//$("#resInfo").hide();
					if (data.code !== "0") {
						showSuccess(data.msg);
						nodes=[];
						resTree.init();
					} else {
						showErr(data.msg);
					}
				}
			});
		}
	});
}

/**
 * 左侧组织架构树模块
 */
var resTree = (function() {
	// 树ID
	var treeName = 'resTree';
	// zTree对象
	var tree = $("#" + treeName);
	// zTree设置
	var setting = {
		view : {
			addHoverDom : addHoverDom,
			removeHoverDom : removeHoverDom
		},
		data : {
			simpleData : {
				enable : true,
				idKey : 'id',
				pIdKey : 'parentId',
				rootPId : '0'
			}
		},
		callback : {
			onClick : onClick
		}
	};

	/**
	 * 点击菜单击事件
	 * @param e
	 * @param treeId 树节点ID
	 * @param treeNode 树节点对象
	 */
	function onClick(e, treeId, treeNode) {
		var zTree = $.fn.zTree.getZTreeObj(treeName), nodes = zTree.getSelectedNodes();
		var nodeSeled = nodes[0];

		// 初始化右侧表单中的村
		resTreeMenu.init();
		// 将编辑状态设置为1
		EditType = 1;
		if (nodeSeled.parentId == "0") { // 如果是系统根节点
			$("#resInfo").hide();
		} else {
			$("#resInfo").show();
			$("#id").val(nodeSeled.rowdata.id);
			$("#version").val(nodeSeled.rowdata.version);
			// 获取父节点
			var parentNode = nodeSeled.getParentNode();
			// 上级资源
			$("#parentId").val(parentNode.id < 0 ? 0 : parentNode.id);
			$("#parentName").val(parentNode.name);
			// 资源名称
			$("#resourceName").val(nodeSeled.rowdata.resourceName);
			// 资源类型
			$("#resourceType").val(nodeSeled.rowdata.resourceType);
			// 排序
			$("#sortNo").val(nodeSeled.rowdata.sortNo);
			// 状态
			$("#status").val(nodeSeled.rowdata.status);
			// 权限命令
			$("#permission").val(nodeSeled.rowdata.permission);
			// 资源路径
			$("#url").val(nodeSeled.rowdata.url);
			// 资源描述
			$("#resourceIntro").val(nodeSeled.rowdata.resourceIntro);
			//菜单样式
			$("#iconClass").val(nodeSeled.rowdata.iconClass);
		}
	}

	/**
	 * 鼠标经过节点时显示自定义按钮
	 */
	function addHoverDom(treeId, treeNode) {
		var aObj = $("#" + treeNode.tId + "_a");
		if ($("#addBtn_res_" + treeNode.id).length > 0) {
			return;
		}
		var addStr = "<span id='addBtn_res_"
				+ treeNode.id
				+ "' class='button add' "
				+ " style='margin-right: 3px;margin-left:2px; background-position: -144px 0px;vertical-align: top;' title='增加' onfocus='this.blur();'></span>";
		aObj.after(addStr); // 注意不要使用append
		var btnAdd = $("#addBtn_res_" + treeNode.id);
		if (btnAdd) {
			btnAdd.bind("click", function() {

				// 将编辑状态设置为0
				EditType = 0;
				var row = treeNode;
				$("#resInfo").show();
				// 初始化组织架构菜单树
				resTreeMenu.init();
				$("#id").val('');
				$("#version").val('');
				// 上级资源
				$("#parentId").val(row.id < 0 ? 0 : row.id);
				$("#parentName").val(row.name);
				// 资源名称
				$("#resourceName").val("");
				// 资源类型
				 $("#resourceType").val(1);
				// 排序
				$("#sortNo").val("1");
				// 状态
				 $("#status").val(1);
				// 权限命令
				$("#permission").val("");
				// 资源路径
				$("#url").val("");
				// 资源描述
				$("#resourceIntro").val("");
				// 菜单样式
				$("#iconClass").val("");
			});
		}
		;
	}

	/**
	 * 鼠标离开节点时删除自定义按钮
	 */
	function removeHoverDom(treeId, treeNode) {
		$("#addBtn_res_" + treeNode.id).unbind().remove();
	}

	/**
	function getTreeData(data, parentNodeId) {
		$.each(data, function(index, rowTemp) {
			var nodeTemp = {
				"id" : rowTemp.id,
				"parentId" : parentNodeId,
				"name" : rowTemp.resourceName,
				"rowdata":rowTemp
			};
			if (rowTemp.resourceChildList != null
					&& rowTemp.resourceChildList != undefined) {
				if (row.resourceChildList.length > 0) {
					getTreeData(row.resourceChildList, rowTemp.id);
				}
			}
			nodes.push(nodeTemp);
		});
	};
	*/

	return {
		/**
		 * 创建组织树
		 */
		init : function() {
			// 选择上级组织
			$(".dropDownTreeMenu").on("click", function() {
				resTreeMenu.showTreeMenu();
			});
			/**
			 * 查询所有组织
			 */
			$.ajax({
				url : rootPath + "/resource/getResourceList",
				async : false,
				dataType : 'json',
				type : 'post',
				success : function(data) {
					$.each(data, function(index, row) {
						var nodeTemp2 = {
							"id" : row.id,
							"parentId" : row.parentId,
							"name" : row.resourceName,
							"rowdata" : row
						};
						/**
						if (row.resourceChildList != null && row.resourceChildList != undefined) {
							if (row.resourceChildList.length > 0) {
								getTreeData(row.resourceChildList, row.id);
							}

						}*/
						nodes.push(nodeTemp2);
					});
					
					treeObj = $.fn.zTree.init(tree, setting, nodes);
					
					// 全部展开
					treeObj.expandAll(true);
				}
			});
			return treeObj;
		}
	};
})();

/**
 * 组织菜单树模块
 */
var resTreeMenu = (function() {
	var treeName = "treeMenu";
	var tree = $("#" + treeName);
	var resContent = $("#resContent");
	var pResNameObj = $("#parentName");
	var pIdObj = $("#parentId");

	var setting = {
		data : {
			simpleData : {
				enable : true,
				idKey : 'id',
				pIdKey : 'parentId',
				rootPId : "1"
			}
		},
		callback : {
			onClick : onClick
		}
	};

	/**
	 * 隐藏树按钮
	 */
	var hideTreeMenu = function() {
		resContent.fadeOut("fast");
		$("body").unbind("mousedown", onBodyDown);
	}

	/**
	 * 显示藏树按钮
	 */
	var showTreeMenu = function() {
		var obj = pResNameObj;
		var offset = pResNameObj.offset();
		if (resContent.is(":hidden")) {
			resContent.css({
				left : offset.left - 10 + "px",
				top : offset.top + obj.outerHeight() + "px",
				width : obj.width() + 10 + "px"
			}).slideDown("fast");
			$("body").bind("mousedown", onBodyDown);
		} else {
			//hideTreeMenu();
		}
	}

	/**
	 * body区域鼠标点击事件
	 */
	var onBodyDown = function(event) {
		if (!(event.target.id == "resContent" || $(event.target).parents(
				"#resContent").length > 0)) {
			hideTreeMenu();
		}
	}

	/**
	 * 点击菜单树事件
	 */
	function onClick(e, treeId, treeNode) {
		var zTree = $.fn.zTree.getZTreeObj(treeName), nodes = zTree
				.getSelectedNodes(), name = "", id = "";
		nodes.sort(function compare(a, b) {
			return a.id - b.id;
		});
		for (var i = 0, l = nodes.length; i < l; i++) {
			name += nodes[i].name + ",";
			id += nodes[i].id + ",";
		}
		if (id.length > 0)
			id = id.substring(0, id.length - 1);
		if (name.length > 0)
			name = name.substring(0, name.length - 1);

		pResNameObj.val(name);
		pIdObj.val(id);
		hideTreeMenu();

	}
	;

	return {
		showTreeMenu : showTreeMenu,
		/**
		 * 创建组织树
		 * 
		 * @returns 返回初始化后的zTree对象
		 */
		init : function() {
			/**
			 * 查询所有组织
			 */
			$.ajax({
				url : rootPath + "/resource/getResourceList",
				async : false,
				data : {
					randDate : new Date()
				},
				dataType : 'json',
				type : 'post',
				success : function(data) {
					if (data != null && data != undefined) {
						$.each(data, function(index, row) {

							nodes.push({
								id : row.id,
								parentId : row.parentId,
								name : row.resourceName
							});
						});
					}
				}
			});
			var treeObj = $.fn.zTree.init(tree, setting, nodes);
			// 全部展开
			treeObj.expandAll(true);
			return treeObj;
		}
	}
})();
